import axios from 'axios';
import env from '../config/env';
import config from '../config/config';

const ajaxUrl = config.apiurl;

//util.ajax = axios.create({
//  baseURL: ajaxUrl,
//  timeout: 30000,
//  headers: {'X-Custom-Header': 'X-Combo'}
//});

let _ajaxTimeOut = 30000;

const $ajax = {
	get:function(url,data,config){
		if(!arguments[0]||!arguments[1]){
			console.error('Ajax error : not url or data');
			return false;
		}
		var config = arguments[2] ? arguments[2] : {};
		return _method(url,data,config,'get');
	},
	post:function(url,data,config){
		if(!arguments[0]||!arguments[1]){
			console.error('Ajax error : not url or data');
			return false;
		}
		var config = arguments[2] ? arguments[2] : {};
		return _method(url,data,config,'post');
	},
	delete:function(url,data,config){
		if(!arguments[0]||!arguments[1]){
			console.error('Ajax error : not url or data');
			return false;
		}
		var config = arguments[2] ? arguments[2] : {};
		return _method(url,data,config,'delete');
	},
	head:function(url,data,config){
		if(!arguments[0]||!arguments[1]){
			console.error('Ajax error : not url or data');
			return false;
		}
		var config = arguments[2] ? arguments[2] : {};
		return _method(url,data,config,'head');
	},
	put:function(url,data,config){
		if(!arguments[0]||!arguments[1]){
			console.error('Ajax error : not url or data');
			return false;
		}
		var config = arguments[2] ? arguments[2] : {};
		return _method(url,data,config,'put');
	},
	patch:function(url,data,config){
		if(!arguments[0]||!arguments[1]){
			console.error('Ajax error : not url or data');
			return false;
		}
		var config = arguments[2] ? arguments[2] : {};
		return _method(url,data,config,'patch');
	},
}
const _method = function(url,data,config,method){
	var qs = require('qs');
	return axios({
		method:method,
		url:ajaxUrl+url,
		data:qs.stringify(data),
		responseType:config.responseType?config.responseType:'json',
	});
	switch (method){
		case 'get':
			return axios.get(ajaxUrl+url,config);
			break;
		case 'post':
			return axios.post(ajaxUrl+url,config.data);
			break;
		case 'delete':
			return axios.delete(ajaxUrl+url,config);
			break;
		case 'head':
			return axios.head(ajaxUrl+url,config);
			break;
		case 'put':
			return axios.put(ajaxUrl+url,config);
			break;
		case 'patch':
			return axios.patch(ajaxUrl+url,config);
			break;
		default:
			return axios.get(ajaxUrl+url,config);
			break;
	}
}
const _authorization = function(){
	let authorization_json = { 
		username: 'janedoe',
    	password: 's00pers3cret'
    };
	return authorization_json;
}
export default $ajax;